public class LongestSubsequence {
    /*获得数组中最长递增子序列长度*/
    public int lengthOfLIS(int[] nums) {
        return dp(nums,0);
    }
    //从上到下的递归解法
    /*dp(i) 表示 [0,i] 最长递增序列的长度*/
    int dp(int[] nums,int i){
        if(i == 0){
            return 1;
        }
        /*在以 nums[i] 结尾和以 nums[i-1] 结尾的子序列中选择较长的那一个*/
        return Math.max(dp(nums,i-1),dp(nums,i-1) + 1);
    }
}
